package com.baomidou.springmvc.shardingjdbc;

import com.baomidou.springmvc.shardingjdbc.holder.DbContextHolder;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/*
 * @Description:多数据源使用 shardingjdbc 实现
 *
 * 第一步：扩展Spring的AbstractRoutingDataSource抽象类，实现动态数据源。
 * AbstractRoutingDataSource中的抽象方法determineCurrentLookupKey是实现数据源的route的核心，这里对该方法进行Override。
 * 【上下文DbContextHolder为一线程安全的ThreadLocal】具体代码如下：
 *
 * @Date : 2018/3/20 16:25
 */
public class DynamicDataSource extends AbstractRoutingDataSource {

    /**
     * 取得当前使用哪个数据源
     *
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey() {
        return DbContextHolder.getDbType();
    }
}



